// 引入redux的createStore方法
import { createStore } from 'redux'

// 定义reducer函数，该函数是一个纯函数，不能改变参数对象的就是纯函数
const reducer = (state, action) => {// 前一次的state数据，与action数据
  if(action.type === 'ADD_TODO') {
    // 增加一个
    // 判断当前的点击添加的商品是否存在于购物车汇总
    let newState = {...state}
    let index = state.cards.findIndex(item => item.id === action.good.id)
    if(index > -1) {
      // state.cards[index].num++
      newState.cards[index].num++
    } else {
      // state.cards.push({id: action.good.id, name: action.good.name, price: action.good.price, num: 1})
      newState.cards.push({
        id: action.good.id,
        name: action.good.name,
        price: action.good.price,
        num: 1
      })
    }
    return newState
  } else if(action.type === 'DEL_TODO') {
    let newState = {...state}
    let index = state.cards.findIndex(item => item.id === action.good.id)
    if(index > -1) {
      // 表示存在
      if(newState.cards[index].num > 0) {
        newState.cards[index].num--
      }
    } else {
      // 表示不存在
      newState.splice(index, 1)
    }
    return newState
  } else {
    // 初始化
    return {
      cards: [
        {id: 1, name: '苹果', price: 10, num: 1}
      ]
    }
  }
}

//调用createStore方法，将reduce作为参数传入
const store = createStore(reducer,
  window.__REDUX_DEVTOOLS_EXTENSION__ && 
  window.__REDUX_DEVTOOLS_EXTENSION__()
  )

//暴露仓库实列对象
export default store